package com.singfan.common;

/**
 * 承载多个结果的结果集
 * Author: HanSongHe
 * Date: 2015-07-27 15:03
 * Desc:
 */
public class MultipleResult {
    /**
     * 承载2个结果的结果集
     * @param <A> A结果类型
     * @param <B> B结果类型
     */
    public class Pair<A, B>{
        public Pair(){
        }

        public Pair(A a, B b){
            this.a = a;
            this.b = b;
        }

        protected A a;
        protected B b;

        public A getA() {
            return a;
        }

        public void setA(A a) {
            this.a = a;
        }

        public B getB() {
            return b;
        }

        public void setB(B b) {
            this.b = b;
        }
    }

    /**
     * 承载3个结果的结果集
     * @param <A> A结果类型
     * @param <B> B结果类型
     * @param <C> C结果类型
     */
    public class Triple<A, B, C> extends Pair<A, B>{
        public Triple(){
        }

        public Triple(A a, B b, C c){
            super(a, b);
            this.c = c;
        }

        protected C c;

        public C getC() {
            return c;
        }

        public void setC(C c) {
            this.c = c;
        }
    }

    /**
     * 承载4个结果的结果集
     * @param <A> A结果类型
     * @param <B> B结果类型
     * @param <C> C结果类型
     * @param <D> D结果类型
     */
    public class Quadra<A, B, C, D> extends Triple<A, B, C>{
        public Quadra(){
        }

        public Quadra(A a, B b, C c, D d){
            super(a, b, c);
            this.d = d;
        }

        protected D d;

        public D getD() {
            return d;
        }

        public void setD(D d) {
            this.d = d;
        }
    }

    /**
     * 承载5个结果的结果集
     * @param <A> A结果类型
     * @param <B> B结果类型
     * @param <C> C结果类型
     * @param <D> D结果类型
     * @param <E> D结果类型
     */
    public class Penta<A, B, C, D, E> extends Quadra<A, B, C, D>{
        public Penta(){
        }

        public Penta(A a, B b, C c, D d, E e){
            super(a, b, c, d);
            this.e = e;
        }

        protected E e;

        public E getE() {
            return e;
        }

        public void setE(E e) {
            this.e = e;
        }
    }
}
